The present invention relates to data storage systems, and more particularly, this invention relates to a multiband encryption engine and a self testing method thereof.
In data storage, it is crucial that data is retrievable from media on which it is stored with only a limited number of correctable errors therein. In order to store data to media and read the data from the media, the following steps are taken when it is desired to store encrypted data to the media.
First, an encryption procedure is performed on the data to be stored, then the data is stored to the media, and then, possibly at some later time, a decryption procedure is used to read the stored data from the media. Some encryption procedures adhere to one or more specific standards, such as the Advanced Encryption Standard (AES), may be based on a tweakable block cipher (e.g., XTS), a symmetric block cipher (e.g., AES-128), etc. Errors may be introduced into the data during the encryption procedure, the storage procedure, or the reading procedure. In order to check whether data is corrupted as it is being stored, encryption self testing has been used. However, conventional encryption self testing is resource intensive and causes unwanted delays and latency to storage operations.
These delays and latency are undesirable, particularly in resource constrained performance driven application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), etc. In order to overcome these delays and latencies, multiple encryption and decryption hardware engines may be used, or the encryption/decryption process may be handled in one or more software layers, as opposed to strictly hardware implementations. A first drawback to either of these solutions is complexity. Another drawback is that the encryption/decryption engine would not achieve full bandwidth due to resource sharing.